// 方法1
// type StringToUnion<
//   T extends string,
//   U extends any[] = []
// > = T extends `${infer F}${infer Rest}`
//   ? StringToUnion<Rest, [...U, F]>
//   : U[number];

// 方法2
type StringToUnion<T extends string> = T extends `${infer F}${infer Rest}`
  ? F | StringToUnion<Rest>
  : never;

type SU = StringToUnion<"hello">;
